#ifndef RACE_H
#define RACE_H

#include <vector>
#include <string>

#include <boost/foreach.hpp>
#include <boost/random/mersenne_twister.hpp>
#include <boost/random/uniform_int.hpp>
#include <boost/random/variate_generator.hpp>

class Track;
class Player;
class Race
{
    public:
        Race();
        virtual ~Race();
        void Update(float timedelta);
        void SelectTrack(Track* track);
        void AddPlayer(Player* player);
        void Start();
        Player* GetPlayer(const std::string& name);
        inline std::vector<Player*>& GetPlayerList()
        {
            return m_playerList;
        }
        inline Track* GetTrack()
        {
            return m_track;
        }
    protected:
    private:
        std::vector<Player*>    m_playerList;
        Track*                  m_track;


        long m_elapsedTime;
        bool m_started;

};

#endif // RACE_H
